/* Copyright 2006-2009 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
 
 /**
  * @author Federico Dayan (fddayan@hotmail.com)
  */
class RemoteGrailsGrailsPlugin {
    // the plugin version
    def version = "0.1"
    // the version or versions of Grails the plugin is designed for
    def grailsVersion = "1.1.1 > *"
    // the other plugins this plugin depends on
    def dependsOn = [:]
    // resources that are excluded from plugin packaging
    def pluginExcludes = [
            "grails-app/views/error.gsp"
    ]

    // TODO Fill in these fields
    def author = "Federico Dayan"
    def authorEmail = "fddayan@hotmail.com"
    def title = "Execute commands in remote grails application"
    def description = '''\\
This plugin let you execute grails command remotly. 
This plugins connects to the remote machine using ssh and it's using JSCh

Examples:

Config.groovy:
grails.deploy.remote.host = "myserver.com"
grails.deploy.remote.user = "fdayan"
grails.deploy.remote.password = "somepass" // it is not required. It will be asked if not set.
grails.deploy.remote.applicationDir = "/home/fdayan/MyApp/trunk"

If we run this from our local machine

> grails test remote war

this will execute grails test war on the remote server (myserver.com)

1) It logs in using the credentials to the server
2) changes directory to grails.deploy.remote.applicationDir (/home/fdayan/MyApp/trunk")
3) runs grails test war

It is usefull for small apps.

'''

    // URL to the plugin's documentation
    def documentation = "http://grails.org/RemoteGrails+Plugin"

    def doWithSpring = {
        // TODO Implement runtime spring config (optional)
    }

    def doWithApplicationContext = { applicationContext ->
        // TODO Implement post initialization spring config (optional)
    }

    def doWithWebDescriptor = { xml ->
        // TODO Implement additions to web.xml (optional)
    }

    def doWithDynamicMethods = { ctx ->
        // TODO Implement registering dynamic methods to classes (optional)
    }

    def onChange = { event ->
        // TODO Implement code that is executed when any artefact that this plugin is
        // watching is modified and reloaded. The event contains: event.source,
        // event.application, event.manager, event.ctx, and event.plugin.
    }

    def onConfigChange = { event ->
        // TODO Implement code that is executed when the project configuration changes.
        // The event is the same as for 'onChange'.
    }
}
